{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "78778f59",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from scipy.spatial.transform import Rotation\n",
    "import trimesh"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "c9069d23",
   "metadata": {},
   "outputs": [],
   "source": [
    "mic_bar_length = 1890 - 70\n",
    "def get_mic_world_space(angle, distance, ind):\n",
    "    mic_z = -(mic_bar_length/2) + ind/14 * mic_bar_length\n",
    "    mic_x = 230 + distance\n",
    "    mic_y = -((45/2) + 20.95) * np.ones_like(angle)\n",
    "    mic_points = np.vstack((mic_x, mic_y, mic_z)).transpose()\n",
    "    rot = Rotation.from_euler('z', angle, degrees=True)\n",
    "    pos_meters = rot.apply(mic_points) / 1000.0\n",
    "    return pos_meters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "234e80c2",
   "metadata": {},
   "outputs": [],
   "source": [
    "angles = np.linspace(0,180,10)\n",
    "distances = np.linspace(0, 1000, 4)\n",
    "inds = np.arange(15)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "58601eed",
   "metadata": {},
   "outputs": [],
   "source": [
    "big_mesh = trimesh.Trimesh()\n",
    "emm6_mesh = trimesh.load('sphere_2.obj')\n",
    "emm6_mesh.vertices = emm6_mesh.vertices * 2\n",
    "# emm6_mesh = trimesh.load('emm6.obj')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "5e5c0b94",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0\n",
      "0.0\n",
      "333.3333333333333\n",
      "666.6666666666666\n",
      "1000.0\n",
      "20.0\n",
      "0.0\n",
      "333.3333333333333\n",
      "666.6666666666666\n",
      "1000.0\n",
      "40.0\n",
      "0.0\n",
      "333.3333333333333\n",
      "666.6666666666666\n",
      "1000.0\n",
      "60.0\n",
      "0.0\n",
      "333.3333333333333\n",
      "666.6666666666666\n",
      "1000.0\n",
      "80.0\n",
      "0.0\n",
      "333.3333333333333\n",
      "666.6666666666666\n",
      "1000.0\n",
      "100.0\n",
      "0.0\n",
      "333.3333333333333\n",
      "666.6666666666666\n",
      "1000.0\n",
      "120.0\n",
      "0.0\n",
      "333.3333333333333\n",
      "666.6666666666666\n",
      "1000.0\n",
      "140.0\n",
      "0.0\n",
      "333.3333333333333\n",
      "666.6666666666666\n",
      "1000.0\n",
      "160.0\n",
      "0.0\n",
      "333.3333333333333\n",
      "666.6666666666666\n",
      "1000.0\n",
      "180.0\n",
      "0.0\n",
      "333.3333333333333\n",
      "666.6666666666666\n",
      "1000.0\n"
     ]
    }
   ],
   "source": [
    "for a in angles:\n",
    "    print(a)\n",
    "    for d in distances:\n",
    "        print(d)\n",
    "        for i in inds:\n",
    "            r = Rotation.from_euler('z', a, degrees=True)\n",
    "            temp_mesh = emm6_mesh.copy()\n",
    "            temp_mesh.vertices = r.apply(temp_mesh.vertices)\n",
    "            temp_mesh.vertices += get_mic_world_space(a, d, i)\n",
    "            big_mesh = trimesh.util.concatenate(big_mesh, temp_mesh)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "1a7125c0",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[   0.          333.33333333  666.66666667 1000.        ]\n"
     ]
    }
   ],
   "source": [
    "print(distances)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "93ef5e20",
   "metadata": {},
   "outputs": [],
   "source": [
    "# big_mesh.export('all_microphones.obj')\n",
    "big_mesh.export('all_spheres_big.obj')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "fb870cd8",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "venv3",
   "language": "python",
   "name": "venv3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
